home *** CD-ROM | disk | FTP | other *** search
- 1 rem -------- the tile game ----------
- 2 rem (c) murdock & blackburn '84
- 3 rem 10/15/1984
- 4 rem
- 100 forx=1to6:readch:co$(x)=chr$(ch):next
- 110 data 28,158,156,30,150,5
- 120 b1$=chr$(154):b2$=chr$(31):b3$=chr$(152):c1$=b1$:c2$=chr$(144)
- 130 sc$=chr$(147):hm$=chr$(19)
- 135 print sc$;co$(6)
- 140 poke53280,2:poke53281,2:printspc(249)"hold on, just a second"
- 150 do$=hm$:forx=1to24:do$=do$+chr$(17):next
- 160 u3$="":forx=1to3:u3$=u3$+chr$(145):next
- 170 r3$="":forx=1to3:r3$=r3$+chr$(29):next
- 180 l5$="":forx=1to5:l5$=l5$+chr$(157):next
- 190 sp$="":forx=1to39:sp$=sp$+" ":next
- 200 sz$=chr$(17)+chr$(29)+chr$(110)+chr$(163)+chr$(109)+chr$(157)+chr$(157)
- 210 sz$=sz$+chr$(157)+chr$(17)+chr$(125)
- 220 t$=chr$(111)+chr$(183)+chr$(183)+chr$(183)+chr$(112)+l5$+chr$(17)
- 230 t$=t$+chr$(165)+r3$+chr$(167)+l5$+chr$(17)
- 240 t$=t$+chr$(165)+r3$+chr$(167)+l5$+chr$(17)
- 250 t$=t$+chr$(108)+chr$(175)+chr$(175)+chr$(175)+chr$(186)+l5$+u3$
- 260 bs$=b2$:forx=1to5:bs$=bs$+chr$(166):next
- 270 bs$=bs$+l5$+chr$(17):bt$="":for x=1to4:bt$=bt$+bs$:next:bs$=bt$+b1$
- 280 dimch$(24):for x=1to24:readch$:ch$(x)=ch$:next
- 290 data a,b,c,d,e
- 295 data f,g,h,i,j
- 300 data k,l,m,n,o
- 305 data p,q,r,s,t
- 310 data u,v,w,x
- 320 if peek(49475)<>234 or peek(49806)<>24then gosub9010
- 330 px=0:poke53280,px:poke53281,px
- 340 printsc$:k$=""
- 350 printdo$;sp$;b1$;:gosub8010:goto360
- 360 printhm$;
- 370 row=5:col=1:br=5:bc=5:mv=0:cu$=t$
- 380 print do$;spc(7);co$(2);"joystick or keyboard (j/k)"c2$;
- 390 getkk$:ifkk$=""then390
- 400 ifkk$="j" then420
- 410 ifkk$<>"k" then390
- 420 printdo$;sp$;:gosub3040
- 430 rem *** mix y/n print ***
- 440 printco$(4);do$;left$(sp$,15);"mix (y/n)";
- 450 geta$:ifa$=""then450
- 460 ifa$= "y"then printdo$;sp$;:gosub3040:gosub4010:mv=0:printdo$;sp$;:goto490
- 470 ifa$= "n"then printdo$;sp$;:goto490
- 480 goto450
- 490 cu$=t$:gosub3040:ifkk$="k" then7000
- 500 goto2010
- 1000 rem *** scroll routine ***
- 1010 mv=mv+1:printdo$b2$"move"b1$;mv;
- 1020 on d goto1030,1050,1060,1080
- 1030 ml=49661:r=5:vu=0:col=col-hu
- 1040 goto1090:rem *left
- 1050 ml=49735:r=5:vu=0:goto1090:rem *rt
- 1060 ml=49416:r=4:hu=0:row=row-vu
- 1070 goto1090:rem *up
- 1080 ml=49483:r=4:hu=0:goto1090:rem *dn
- 1090 l=(col-1)*5+8:t=(row-1)*4+2
- 1100 h=(hu+1)*5:v=(vu+1)*4
- 1110 poke251,l:poke252,t:poke253,h-1:poke254,v-1
- 1120 gosub6510
- 1130 for x=1tor
- 1140 poke254,v-1:poke2,1
- 1150 sys ml
- 1160 next
- 1170 poke s+4,16
- 1180 return
- 1500 get k$:if k$=""then1500
- 1510 return
- 2000 rem *** read joy stick ***
- 2010 jv=peek(56320)
- 2020 getk$:ifk$=chr$(147)then350
- 2030 fr=jvand16:if fr<>16then gosub5010:goto2010
- 2040 jv=15-(jvand15)
- 2050 if jv=0 then gosub2110:goto2010
- 2060 if jv=1 and row>1 then row=row-1:gosub3010:goto2010
- 2070 if jv=2 and row<5 then row=row+1:gosub3010:goto2010
- 2080 if jv=8 and col<5 then col=col+1:gosub3010:goto2010
- 2090 if jv=4 and col>1 then col=col-1:gosub3010:goto2010
- 2100 goto2010:rem * invalid direction *
- 2110 printc1$;t$;
- 2120 printc2$;t$;
- 2130 return
- 3000 rem ******* set cursor *******
- 3010 if fl then cu$=bs$
- 3020 printc1$;cu$;c2$;
- 3030 cu$=t$
- 3040 r=(row-1)*4+2:c=(col-1)*5+8
- 3050 poke251,r:poke252,c
- 3060 sys 49806
- 3070 printcu$;
- 3080 if row=br and col=bc then fl=1:goto3100
- 3090 fl=0
- 3100 return
- 4000 rem ******* random mix *******
- 4010 a=rnd(rnd(0)):printleft$(do$,5);b2$;"mixing"b1$;:gosub3040
- 4020 for mx=1 to 20
- 4030 gosub4180
- 4040 ifa2=1thenrow=br:col=bc-a:goto4060
- 4050 row=br:col=bc+a
- 4060 if col<1 or col>5 then4030
- 4070 gosub3010:gosub5010
- 4080 getk$:ifk$<>"" then4160
- 4090 gosub4180
- 4100 ifa2=1thencol=bc:row=br-a:goto4120
- 4110 col=bc:row=br+a
- 4120 if row<1 or row>5 then4090
- 4130 gosub3010:gosub5010
- 4140 getk$:ifk$<>"" then4160
- 4150 next
- 4160 printleft$(do$,5);left$(sp$,6);:gosub3040
- 4170 return
- 4180 a=int(rnd(1)*4)+1
- 4190 a2=int(rnd(1)*2)
- 4200 return
- 5000 rem *** prepare to scroll ***
- 5010 if col<>bc then5060
- 5020 if br=row then return
- 5030 vu=abs(row-br):d=4:tr=row+1
- 5040 if br<row then d=3:tr=row-1
- 5050 br=row:gosub1010:row=tr:gosub3040:return
- 5060 if row<>br then gosub6010:return
- 5070 hu=abs(col-bc):d=2:tc=col+1
- 5080 if bc<col then d=1:tc=col-1
- 5090 bc=col:gosub1010:col=tc:gosub3040:return
- 5100 if col<>bc then return
- 6000 rem ******* buzzer *******
- 6010 fora=1to8:poke54296,15:fort=1to3:next:poke54296,0:fort=1to3:next:next
- 6020 return
- 6500 rem *** pong subroutine ***
- 6510 s=54272
- 6520 poke s+1,20
- 6530 poke s+5,9
- 6540 poke s+6,9
- 6550 poke s+24,4
- 6560 poke s+4,17
- 6570 return
- 7000 rem *** get keyboard input ***
- 7010 getk$:ifk$="" then gosub2110:goto7010
- 7020 ifk$=chr$(147)then350
- 7030 ifk$=" " then gosub5000:goto7010
- 7040 if k$="a" and row>1 then row=row-1:gosub3010:goto7010
- 7050 if k$="z" and row<5 then row=row+1:gosub3010:goto7010
- 7060 if k$="." and col<5 then col=col+1:gosub3010:goto7010
- 7070 if k$="," and col>1 then col=col-1:gosub3010:goto7010
- 7080 goto7010
- 8000 rem ******* draw board *******
- 8010 ch=1:printb1$;:ifk$=chr$(147)then8100
- 8020 printhm$;spc(6);chr$(117);:forx=1to27:printchr$(96);:next:printchr$(105)
- 8030 printspc(6)chr$(98);" ";:forx=1to25:printchr$(164);:next:print" "chr$(98)
- 8040 printleft$(do$,2):for x=1 to 20
- 8050 print spc(6);chr$(98);chr$(167);spc(25);chr$(180);chr$(98)
- 8060 next
- 8070 printhm$;left$(do$,23);
- 8080 printspc(6)chr$(98);" ";:forx=1to25:printchr$(163);:next:print" "chr$(98)
- 8090 printspc(6);chr$(106);:forx=1to27:printchr$(96);:next:printchr$(107)
- 8100 for row=1 to 5
- 8110 for col=1 to 5
- 8120 if row=5 and col=5 then printb3$;:cu$=bs$:gosub3040:goto8170
- 8130 printb3$;:cu$=bs$:gosub 3040
- 8140 printb1$;:cu$=t$:gosub3040
- 8150 printb2$;:cu$=sz$:gosub3040
- 8160 printco$(row);ch$(ch);b2$;chr$(125):ch=ch+1
- 8170 next col
- 8180 next row
- 8190 return
- 9000 rem ******* ml routines *******
- 9010 fori=49416to49815
- 9020 readt:pokei,t:next
- 9030 return
- 49416 data32,226,193,165,251,166,252,32,155,193,32,205,193,166,254,202,48
- 49433 data21,24,165,208,105,40,133,210,133,214,165,209,105,0,133,211,32
- 49450 data119,193,202,16,235,164,253,185,32,192,145,208,185,72,192,145,212
- 49467 data136,16,243,32,226,193,88,96,234,234,234,234,234,234,234,234,32
- 49484 data226,193,32,132,194,170,165,251,32,155,193,32,205,193,166,254,202
- 49501 data240,208,56,165,208,233,40,133,210,133,214,165,209,233,0,133,211
- 49518 data24,32,119,193,202,16,234,48,184,41,3,9,216,133,215,164,253
- 49535 data177,210,145,208,177,214,145,212,136,16,245,165,211,133,209,165,210
- 49552 data133,208,165,215,133,213,165,214,133,212,96,72,169,216,133,208,172
- 49569 data136,2,136,132,209,24,165,208,105,40,133,208,165,209,105,0,133
- 49586 data209,202,16,240,24,104,101,208,133,208,133,212,165,209,105,0,133
- 49603 data209,41,3,9,216,133,213,164,253,96,165,2,208,3,169,32,44
- 49620 data177,208,153,32,192,177,212,153,72,192,136,16,236,96,120,162,30
- 49637 data181,208,72,189,0,192,149,208,104,157,0,192,202,16,241,96,234
- 49654 data234,234,234,234,234,234,234,32,226,193,32,132,194,165,251,166,211
- 49671 data32,155,193,160,0,177,208,133,210,177,212,72,144,13,200,177,208
- 49688 data72,177,212,136,145,212,104,145,208,200,196,253,144,239,165,2,208
- 49705 data3,169,32,44,165,210,145,208,104,145,212,198,211,198,254,16,201
- 49722 data32,226,193,88,96,234,234,234,234,234,234,234,234,32,226,193,32
- 49739 data132,194,165,251,166,211,32,155,193,177,208,133,210,177,212,72,164
- 49756 data253,240,15,136,177,208,72,177,212,200,145,212,104,145,208,136,208
- 49773 data241,165,2,208,3,169,32,44,165,210,145,208,104,145,212,198,211
- 49790 data198,254,16,203,48,182,166,252,138,24,101,254,133,211,96,234,24
- 49807 data164,252,166,251,32,240,255,96,234
-